 |
2D Strip Packing Problem (SPP) |
This web page was designed to give background information to a paper by
Nthabiseng Ntene and Jan van Vuuren entitled A survey and comparison of level
heuristics for the 2D oriented strip packing problem in which some classical
heuristics from the literature as well as some suggested modifications are
presented. A new heuristic is also proposed.
Packing problems have been proven to be NP-hard and as such many researchers
have concentrated on finding approximation algorithms. The class of algorithms
studied for solving the 2D strip packing problem is called level algorithms
which are primarily used when the entire information about the items to be
packed is available. In this class, the strip is divided into horizontal levels
whose height corresponds to the height of the tallest rectangle packed on a
previous level. The first level is the bottom of the strip.
The performance of heuristics were tested on a wide range of benchmark data
sets. The benchmark data sets presented on this page is a collection of data
from different sources. The idea behind developing this page is to allow other
researchers to use the benchmark data and avoid having to generate new data sets
to test algorithms. This will also allow proper comparisons between algorithms
when using the same benchmark data sets.
The benchmark data was applied to
the following list of heuristics from literature:
- Next-Fit Decreasing Height (NFDH). Items are pre-ordered according
to non-increasing height. Items are packed on a level and if an item does not
fit on the current level, a new level is created on top of the top level.
Previously packed levels are never revisited.
- First-Fit Decreasing Height (FFDH). Items are first sorted
according to non-increasing height. Items are packed on the lowest level where
it fits. A new level is created on top of the top level if an item does not
fit in any of the existing levels.
- Best-Fit Decreasing Height (BFDH). Items are pre-ordered according
to non-increasing height. Items are packed on a level with minimum residual
horizontal space.
- Split Fit (SF). Items are divided into two sublists of narrow and
wide. The wide rectangles are packed first using the FFDH algorithm. The
packed items are then rearranged such that the widest are at the bottom. This
rearrangement leaves a rectangular region that will be used to insert the
narrow items using the FFDH algorithm. If none of the narrow items fit into
this region then packing continues above the wide items.
- Floor-Ceiling No Rotation (FCNR). Within a level, a floor is
defined as the horizontal line coinciding with the bottom edges of items
packed on that level and a ceiling is a horizontal line coinciding with
the upper edge of the tallest item packed on that level. Items are preferrably
packed on the ceiling and if there is insufficient ceiling space then floor
packing is considered. If an item does not fit either on the ceiling or floor
then a new level is created above the top level and the item will initialise
the level by being packed on the floor.
- Knapsack01 (KP01). Items are first sorted according to
non-increasing height. A level is initialised by packing an item of greatest
height, then a knapsack problem is solved amongst the unpacked items.
The six suggested modifications to some of the heuristics and a new
heuristic are briefly described as:
- Next-Fit Decreasing Height Decreasing Width (NFDHDW). Items of
equal height are resolved by non-increasing width
- Next-Fit Decreasing Height Increasing Width (NFDHIW). Items of
equal height are resolved by non-decreasing width.
- First-Fit Decreasing Height Decreasing Width (FFDHDW). Pre-ordering
of items of equal height is additionally resolved by non-increasing width.
- First-Fit Decreasing Height Increasing Width (FFDHIW). Pre-ordering
of items of equal height is additionally resolved by non-decreasing width.
- Best-Fit Decreasing Height Decreasing Width (BFDHDW). Items of
equal height are additionally resolved by non-increasing width.
- Best-Fit Decreasing Height Increasing Width (BFDHIW). Items of
equal height are additionally resolved by non-decreasing width.
- Size Alternating Stack (SAS) . Items are split into two sublists of
narrow and wide. The height of a level is determined by the tallest rectangle
between the two sublists. From the left to the right of the strip we alternate
between the two sublists and rectangles in the same sublist are then stacked
from top to bottom.
The generation of the benchmark data sets from six
sources is briefly described below:
- Wang and Valenzuela benchmark data (2001). Two classes of data sets
called nice and path were generated. The former consists of
rectangles of similar sizes and shapes while the latter consists of rectangles
with significantly varying shapes and sizes. Data sets of sizes n = 25, 50,
100, 200, 500 were generated each with 50 tests instances except for the
case n = 500 where only ten test instances were generated. The test
instances are denoted by nice.n and path.n and a total of
420 data sets were generated.
- Hopper and Turton benchmark data (2001). Twenty one data
sets (denoted C ij) ranging from 17 to 197
rectangles were generated. The subscript i represents seven categories
while the superscript j represents three test instances. The data sets
were randomly generated maintaining an aspect ratio of 7 with known optimal
solutions of all test instances.
- Hopper and Turton benchmark data (2002). Guillotineable (denoted T
ij) and non-guillotineable data
sets (denoted H ij) were generated from a 200 x 200
square.
- Burke benchmark data (2004). Twelve data
sets (denoted Bi) were generated through slicing a large
rectangle repeatedly either vertically or horizontally to such that two
rectangles are generated after each cut. Before each slicing, it is ensured
that the dimensions generated are not smaller than the minimum dimension
specified and the process is carried out until the required number of
rectangles is obtained.
- Christofides and Whitlock benchmark data (1977). Data
sets for cutting stock problem and these were transformed and adapted for
strip packing problems (denoted Gi (i = 1,2,3)) were generated. The
data were generated by sampling from a uniform distribution in the range [0,
0.25A], where A is the area of the inital large rectangle.
- Beasley benchmark data. Beasley (1985a) generated data
sets (denoted U1,U2,U3,U4) for
the unconstrained guillotine cutting problem. The heights were sampled from
uniform distributions [H/4, 3H/4] while the widths were sampled from [w/4,
3w/4]. Twelve non-guillotineable random problem instances (denoted
V1,...,V12) were generated by Beasley (1985b). These
were also transformed and adapted to strip packing problems.
References
Beasley JE, (1985a), Algorithms for Unconstrained Two-Dimensional Guillotine Cutting, Journal of the Operational Research Society, 36(4), 297-306.
Beasley JE, (1985b), An Exact Two-Dimensional Non-Guillotine Cutting Tree Search Procedure, Operations Research, 33(1), 49-64.
Burke EK, Kendall G & Whitwell G, (2004), A New Placement Heuristic for the Orthogonal Stock-Cutting Problem, Operations Research, 52(4), 655-671.
Christofides N & Whitlock C, (1977), An Algorithm for Two-Dimensional Cutting Problems, Operations Research, 25(1), 31-44.
Hopper E & Turton BCH, (2001), An Empirical Investigation of Meta-Heuristic and Heuristic Algorithms for a 2D Packing Problem, European Journal of Operational Research, 128(1), 34-57.
Hopper E & Turton BCH, (2002), Problem Generators for Rectangular Packing Problems, Studia Informatica Universalis, 2(1), 123-136.
Wang PY & Valenzuela CL, (2001), Data set generation for rectangular placement problems, European Journal of Operational Research, 134, 378-391.
Home